Embedded Objects এবং Media Files

Java Technologies - অ্যাপাচি পিওআই (Apache POI)
368

Apache POI লাইব্রেরি মূলত Microsoft Office ডকুমেন্টগুলোর জন্য ব্যবহৃত হয়, যার মাধ্যমে আপনি Word, Excel, এবং PowerPoint ডকুমেন্ট তৈরি, ম্যানিপুলেট এবং এক্সেস করতে পারেন। তবে, POI লাইব্রেরি Embedded Objects (যেমন PDF, Excel ফাইল বা Word ডকুমেন্ট) এবং Media Files (যেমন Images, Audio, Video) এর সাথে কাজ করার জন্য কিছু সীমাবদ্ধতার মধ্যে সীমাবদ্ধ।

এই গাইডে, আমরা দেখব কিভাবে Word ডকুমেন্টে এমবেডেড অবজেক্ট এবং মিডিয়া ফাইল (যেমন চিত্র, অডিও, ভিডিও) যুক্ত করা এবং এক্সেস করা সম্ভব।


1. Embedded Objects (অবজেক্ট এমবেড করা)

Embedded Objects বলতে এমন অবজেক্টগুলো বোঝায়, যেগুলি ডকুমেন্টের মধ্যে অন্য কোনো ফাইলের আকারে এমবেড করা থাকে। উদাহরণস্বরূপ, একটি Word ডকুমেন্টে আপনি একটি PDF বা Excel ফাইল এমবেড করতে পারেন। Apache POI লাইব্রেরির মাধ্যমে সরাসরি embedded object অ্যাক্সেস করার জন্য কিছু সীমাবদ্ধতা আছে, তবে আপনি এমবেডেড অবজেক্টের type এবং data গুলি অ্যাক্সেস করতে পারবেন।

এখানে দেখানো হচ্ছে কিভাবে Word ডকুমেন্টে এমবেডেড Object পড়া যায়:

উদাহরণ: Embedded Object এক্সেস করা

import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;

import java.io.FileInputStream;
import java.io.IOException;

public class EmbeddedObjectExample {
    public static void main(String[] args) throws IOException, InvalidFormatException {
        // Word ফাইলের পাথ
        String filePath = "word_with_embedded_object.docx";

        // FileInputStream তৈরি করা
        FileInputStream fis = new FileInputStream(filePath);

        // XWPFDocument এর মাধ্যমে Word ফাইল লোড করা
        XWPFDocument document = new XWPFDocument(fis);

        // Embedded objects বা OLE objects পাওয়ার জন্য
        for (XWPFPictureData pictureData : document.getAllPictures()) {
            System.out.println("Embedded Object Type: " + pictureData.suggestFileExtension());
        }

        // Word ডকুমেন্ট বন্ধ করা
        document.close();
        fis.close();
    }
}

এখানে:

  • getAllPictures() মেথড ব্যবহার করে ডকুমেন্টে থাকা এমবেডেড Picture (চিত্র বা গ্রাফিক্স) অ্যাক্সেস করা হয়েছে।
  • তবে, embedded non-image objects (যেমন PDF, Excel) এর জন্য POI সরাসরি কোনো API প্রদান করে না। এজন্য Apache Tika অথবা অন্য কোনো লাইব্রেরি ব্যবহার করে আপনি ডকুমেন্টের এমবেডেড অবজেক্ট এক্সেস করতে পারেন।

2. Media Files (মিডিয়া ফাইল)

Apache POI লাইব্রেরি Word ডকুমেন্টে Media Files (যেমন Images, Audio, Video) এমবেড করার জন্যও ব্যবহৃত হতে পারে। আপনি চিত্র, অডিও বা ভিডিও ফাইল Word ডকুমেন্টে এমবেড করতে পারেন এবং তারপর POI এর মাধ্যমে সেই ফাইলগুলো পড়তে পারবেন।

উদাহরণ: Word ডকুমেন্টে চিত্র এমবেড করা

import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.xwpf.usermodel.XWPFPictureData;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class EmbedImageInWord {
    public static void main(String[] args) throws IOException {
        // Word ডকুমেন্ট তৈরি করা
        XWPFDocument document = new XWPFDocument();

        // চিত্র এমবেড করা
        String imagePath = "path_to_image.jpg";
        FileInputStream imageInputStream = new FileInputStream(imagePath);
        
        // চিত্র এমবেড করে ডকুমেন্টে যোগ করা
        XWPFPictureData pictureData = document.addPictureData(imageInputStream, XWPFPictureData.PICTURE_TYPE_JPEG);
        
        // ছবি যুক্ত করার জন্য একটি প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();
        XWPFRun run = paragraph.createRun();
        
        // চিত্রটিকে প্যারাগ্রাফে এমবেড করা
        run.addPicture(imageInputStream, XWPFDocument.PICTURE_TYPE_JPEG, imagePath, Units.toEMU(300), Units.toEMU(200));

        // Word ফাইল সেভ করা
        try (FileOutputStream out = new FileOutputStream("word_with_image.docx")) {
            document.write(out);
        }

        document.close();
    }
}

এখানে:

  • addPictureData() মেথড ব্যবহার করে চিত্র এমবেড করা হয়েছে।
  • addPicture() মেথডের মাধ্যমে চিত্রটিকে Word ডকুমেন্টে প্যারাগ্রাফে ইনসার্ট করা হয়েছে।

উদাহরণ: Word ডকুমেন্টে অডিও বা ভিডিও এমবেড করা

অডিও বা ভিডিও ফাইল এমবেড করার জন্য, Apache POI সরাসরি সমর্থন দেয় না, তবে আপনি OLE Object এমবেড করতে পারেন যেগুলি বিভিন্ন মিডিয়া ফাইল যুক্ত করার জন্য ব্যবহৃত হয়।

অডিও বা ভিডিও ফাইল এমবেড করার জন্য আপনাকে OLE Object ব্যবহার করতে হবে, যা Word ডকুমেন্টের একটি অবজেক্ট হিসেবে থাকতে পারে। এটি করার জন্য আপনাকে আরও গভীরভাবে Apache POI এবং OLE প্রযুক্তি সম্পর্কে জানার প্রয়োজন।


3. Embedded Media এক্সেস করা

Word ডকুমেন্টে এমবেডেড মিডিয়া বা চিত্র এক্সেস করতে, সাধারণত XWPFPictureData ব্যবহার করা হয়। তবে, অন্যান্য মিডিয়া ফাইল যেমন অডিও বা ভিডিও এক্সেস করার জন্য আপনাকে Apache POI তে কিছু সীমাবদ্ধতার সম্মুখীন হতে হতে পারে। এজন্য তৃতীয় পক্ষের লাইব্রেরি, যেমন Apache Tika বা OLE automation ব্যবহার করতে হতে পারে।


সারাংশ

Apache POI দিয়ে Word ডকুমেন্টে এমবেডেড Objects (যেমন PDF, Excel) এবং Media Files (যেমন Images, Audio, Video) এক্সেস ও এমবেড করা যায়। তবে, Word ডকুমেন্টে কেবল Images এবং OLE Objects-এর মাধ্যমে মিডিয়া ফাইল যুক্ত করা সম্ভব এবং XWPFDocument ক্লাসের মাধ্যমে চিত্র বা গ্রাফিক্স এক্সেস করা যায়। যদিও Apache POI লাইব্রেরির মাধ্যমে সরাসরি Audio বা Video ফাইল এক্সেস করা সম্ভব নয়, তবে এগুলো OLE Objects হিসেবে সংযুক্ত করা যেতে পারে।

Content added By

Excel, Word এবং PowerPoint ফাইলে Embedded Object যোগ করা

233

অ্যাপাচি পিওআই (Apache POI) লাইব্রেরি দিয়ে Excel, Word, এবং PowerPoint ফাইলে embedded object যোগ করা সম্ভব। Embedded object হলো অন্য কোনো ফাইল বা ডকুমেন্টের অংশ যা মূল ডকুমেন্টের ভিতরে অন্তর্ভুক্ত থাকে। এটি সাধারণত PDF, Excel, Word, অথবা Image ফাইল হতে পারে। অ্যাপাচি পিওআই এর মাধ্যমে এই ধরনের অবজেক্ট এক্সেল, ওয়ার্ড, এবং পাওয়ারপয়েন্ট ফাইলের মধ্যে অন্তর্ভুক্ত করা যায়।


Excel ফাইলে Embedded Object যোগ করা

এক্সেল ফাইলে সাধারণত OLE (Object Linking and Embedding) অবজেক্ট বা Image ফাইল যোগ করা হয়। অ্যাপাচি পিওআই দিয়ে Excel শীটে Embedded OLE Object যোগ করা সম্ভব হলেও, এই প্রক্রিয়া কিছুটা জটিল এবং POI সরাসরি এতে কাজ করতে পারে না। তবে, কিছু আউটপুট ফরম্যাট যেমন XSSF বা SXSSF এর মাধ্যমে ইমেজ বা ছোট ফাইল অন্তর্ভুক্ত করা যেতে পারে।

// Example of embedding an image in Excel using Apache POI
FileInputStream fis = new FileInputStream("example.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(fis);
XSSFSheet sheet = workbook.getSheetAt(0);

// Add image as an embedded object
InputStream is = new FileInputStream("image.png");
byte[] imageBytes = is.readAllBytes();
int pictureIdx = workbook.addPicture(imageBytes, Workbook.PICTURE_TYPE_PNG);
is.close();

// Create an anchor to place the image
XSSFRichTextString str = new XSSFRichTextString("Embedded Image Example");
XSSFRichTextString anchor = new XSSFRichTextString("Test");

// Write image into Excel
XSSFPictureData picture = sheet.createDrawingPatriarch().createPicture(new XSSFRichTextString(), pictureIdx);
picture.resize();

fis.close();
workbook.write(new FileOutputStream("embedded_example.xlsx"));
workbook.close();

এখানে একটি ইমেজ যোগ করা হয়েছে, তবে OLE অবজেক্ট যোগ করতে POI এর সাপোর্ট সীমিত।


Word ফাইলে Embedded Object যোগ করা

Word ডকুমেন্টে embedded objects যোগ করার জন্য XWPF ক্লাস ব্যবহার করা হয়। OLE অবজেক্ট যেমন Excel, PDF, বা Image ফাইল Word ডকুমেন্টে ইমবেড করা যেতে পারে।

Word ডকুমেন্টে Embedded Object যোগ করা

// Example of embedding an object in a Word document (XWPF)
FileInputStream fis = new FileInputStream("example.docx");
XWPFDocument document = new XWPFDocument(fis);

// Create a paragraph and embed the object (like an image)
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
run.setText("Embedded Object Example");

// Assuming the object is an image
FileInputStream imageStream = new FileInputStream("image.jpg");
run.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(100), Units.toEMU(100));
imageStream.close();

fis.close();
document.write(new FileOutputStream("embedded_word_example.docx"));
document.close();

এখানে একটি ইমেজ Word ডকুমেন্টে এমবেড করা হয়েছে। একইভাবে, OLE Object যেমন Excel বা PDF ফাইলও এমবেড করা যেতে পারে, তবে এটা একটু জটিল এবং কিছু অতিরিক্ত কনফিগারেশনের প্রয়োজন হয়।


PowerPoint ফাইলে Embedded Object যোগ করা

PowerPoint (PPTX) ফাইলে embedded object যোগ করা যেতে পারে, যেমন Excel, Word ফাইল, বা Image। POI এর XSLF প্যাকেজের মাধ্যমে PowerPoint ফাইলের স্লাইডে এসব অবজেক্ট এমবেড করা সম্ভব।

PowerPoint ফাইলে Embedded Object যোগ করা

// Example of embedding an object in a PowerPoint slide (XSLF)
XMLSlideShow ppt = new XMLSlideShow();
XSLFSlide slide = ppt.createSlide();

// Embed an image in the slide
FileInputStream imageStream = new FileInputStream("image.jpg");
XSLFPictureData pictureData = ppt.addPicture(imageStream, PictureData.PictureType.JPEG);
XSLFPictureShape pictureShape = slide.createPicture(pictureData);
imageStream.close();

ppt.write(new FileOutputStream("embedded_ppt_example.pptx"));
ppt.close();

এখানে একটি ইমেজ PowerPoint স্লাইডে এমবেড করা হয়েছে। PowerPoint এর স্লাইডে এমবেডেড Excel, PDF, অথবা অন্যান্য ফাইল types প্রক্রিয়া করতে হয় OLE অবজেক্টের মাধ্যমে, তবে POI সরাসরি এই ধরনের ফাইল এমবেড করার সুবিধা দেয় না।


সারাংশ

অ্যাপাচি পিওআই লাইব্রেরি ব্যবহার করে Excel, Word, এবং PowerPoint ফাইলে embedded objects যোগ করা সম্ভব। তবে, এই প্রক্রিয়াটি কিছু ক্ষেত্রে সীমিত এবং POI কিছু OLE Objects যোগ করার ক্ষেত্রে কিছু জটিলতা সৃষ্টি করতে পারে। সাধারণত ইমেজ, Excel ফাইল, অথবা PDF ফাইল এমবেড করা সহজ হলেও, অন্যান্য ধরনের অবজেক্ট এমবেড করতে অতিরিক্ত কনফিগারেশনের প্রয়োজন হতে পারে।

Content added By

Media Files (Images, Videos) যোগ করা

191

Apache POI লাইব্রেরি ব্যবহার করে আপনি Microsoft Word এবং Excel ডকুমেন্টে Media Files (যেমন, Images, Videos) যোগ করতে পারেন। এই টিউটোরিয়ালে, আমরা দেখব কিভাবে Word ডকুমেন্টে ছবি এবং ভিডিও যোগ করা যায়, এবং Excel ফাইলে ছবি যুক্ত করা যায়।


1. Microsoft Word ডকুমেন্টে Image যোগ করা

Apache POI ব্যবহার করে Word ডকুমেন্টে ছবি যোগ করতে, আপনাকে XWPF API ব্যবহার করতে হবে। এতে addPicture মেথডের মাধ্যমে ছবি ইনসার্ট করা সম্ভব।

উদাহরণ: Word ডকুমেন্টে Image যোগ করা

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFPictureData;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class AddImageToWordExample {
    public static void main(String[] args) throws IOException {
        // Word ডকুমেন্ট তৈরি করা
        XWPFDocument document = new XWPFDocument();

        // প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();

        // ছবি ফাইল থেকে ইনপুট স্ট্রিম
        FileInputStream imageStream = new FileInputStream("example_image.jpg");

        // ছবি যোগ করা (পিকচার ফরম্যাট, স্টাইল, প্রস্থ, উচ্চতা)
        paragraph.createRun().addPicture(imageStream, XWPFPictureData.PICTURE_TYPE_JPEG, "example_image.jpg", 400, 300);

        // ডকুমেন্ট ফাইল সেভ করা
        try (FileOutputStream out = new FileOutputStream("document_with_image.docx")) {
            document.write(out);
        }

        document.close();
        imageStream.close();
        System.out.println("ইমেজ সফলভাবে Word ডকুমেন্টে যোগ করা হয়েছে!");
    }
}

এটি কী করবে:

  • example_image.jpg ফাইলটি ইনপুট হিসেবে নেয় এবং Word ডকুমেন্টে একটি প্যারাগ্রাফের মধ্যে ইমেজ যোগ করে।
  • ইমেজের আকার 400x300 পিক্সেল হিসাবে সেভ হবে।
  • ডকুমেন্টটি document_with_image.docx নামে সেভ হবে।

2. Microsoft Word ডকুমেন্টে Video যোগ করা

Apache POI সরাসরি Word ডকুমেন্টে ভিডিও যোগ করার জন্য কোনো মেথড প্রদান করে না, কিন্তু আপনি OLE Object ব্যবহার করে একটি ভিডিও (যেমন, .mp4 বা .avi) embed করতে পারেন। এটি একটি অত্যন্ত জটিল প্রক্রিয়া এবং POI এর সাধারণ API এর বাইরে। তবে আপনি ভিডিও লিঙ্ক সংযুক্ত করতে পারেন, যা কেবল একটি হাইপারলিঙ্ক হিসেবে কাজ করবে।

উদাহরণ: Word ডকুমেন্টে Video লিঙ্ক যোগ করা

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;

import java.io.FileOutputStream;
import java.io.IOException;

public class AddVideoLinkToWordExample {
    public static void main(String[] args) throws IOException {
        // Word ডকুমেন্ট তৈরি করা
        XWPFDocument document = new XWPFDocument();

        // প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();

        // ভিডিও লিঙ্ক যোগ করা (ভিডিও ফাইলের URL)
        String videoLink = "https://www.example.com/sample_video.mp4";
        paragraph.createRun().setText("Click here to watch the video: ");
        paragraph.createRun().setText(videoLink);

        // ডকুমেন্ট ফাইল সেভ করা
        try (FileOutputStream out = new FileOutputStream("document_with_video_link.docx")) {
            document.write(out);
        }

        document.close();
        System.out.println("ভিডিও লিঙ্ক সফলভাবে Word ডকুমেন্টে যোগ করা হয়েছে!");
    }
}

এটি কী করবে:

  • একটি video link (যেমন: ইউটিউব বা অন্য কোনো প্ল্যাটফর্মে ভিডিও URL) Word ডকুমেন্টে প্যারাগ্রাফের মধ্যে যোগ করবে।
  • ডকুমেন্টটি document_with_video_link.docx নামে সেভ হবে।

3. Microsoft Excel ডকুমেন্টে Image যোগ করা

Apache POI ব্যবহার করে Excel ডকুমেন্টে ইমেজ যোগ করার জন্য HSSFWorkbook বা XSSFWorkbook এর মাধ্যমে Drawing API ব্যবহার করা হয়।

উদাহরণ: Excel ফাইলে Image যোগ করা

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.util.IOUtils;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class AddImageToExcelExample {
    public static void main(String[] args) throws IOException {
        // Excel ফাইল তৈরি
        XSSFWorkbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");

        // ছবি ইনপুট স্ট্রিম
        FileInputStream imageStream = new FileInputStream("example_image.jpg");
        byte[] bytes = IOUtils.toByteArray(imageStream);

        // ছবি ইনসার্ট করার জন্য Drawing প্রপার্টি তৈরি
        int pictureIdx = workbook.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);
        Drawing drawing = sheet.createDrawingPatriarch();
        ClientAnchor anchor = workbook.getCreationHelper().createClientAnchor();

        // ছবি অবস্থান এবং আকার কনফিগার করা
        anchor.setCol1(1);
        anchor.setRow1(1);
        anchor.setCol2(3);
        anchor.setRow2(4);

        // ছবি সেল সেট করা
        Picture pict = drawing.createPicture(anchor, pictureIdx);
        pict.resize();  // ছবির আকার ঠিক করা

        // Excel ফাইল সেভ করা
        try (FileOutputStream out = new FileOutputStream("document_with_image.xlsx")) {
            workbook.write(out);
        }

        workbook.close();
        imageStream.close();
        System.out.println("ইমেজ সফলভাবে Excel ডকুমেন্টে যোগ করা হয়েছে!");
    }
}

এটি কী করবে:

  • example_image.jpg ফাইলটি Excel ডকুমেন্টে Sheet1 এর মধ্যে একটি নির্দিষ্ট স্থানে (কলাম 1, সারি 1 থেকে কলাম 3, সারি 4) ইমেজ যোগ করবে।
  • ডকুমেন্টটি document_with_image.xlsx নামে সেভ হবে।

4. Excel ডকুমেন্টে Video লিঙ্ক যোগ করা

Excel ডকুমেন্টে ভিডিও যোগ করার মতো কোনো সরাসরি ফিচার POI এর মাধ্যমে উপলব্ধ নয়, তবে আপনি ভিডিও লিঙ্ক (URL) যোগ করতে পারেন যা একটি ক্লিকেবল লিঙ্ক হিসেবে কাজ করবে।

উদাহরণ: Excel ডকুমেন্টে Video লিঙ্ক যোগ করা

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;

public class AddVideoLinkToExcelExample {
    public static void main(String[] args) throws IOException {
        // Excel ফাইল তৈরি
        XSSFWorkbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");

        // ভিডিও লিঙ্কের জন্য সেল
        Row row = sheet.createRow(0);
        Cell cell = row.createCell(0);
        String videoLink = "https://www.example.com/sample_video.mp4";

        // লিঙ্ক যোগ করা
        Hyperlink link = workbook.getCreationHelper().createHyperlink(HyperlinkType.URL);
        link.setAddress(videoLink);
        cell.setHyperlink(link);
        cell.setCellValue("Click here to watch the video");

        // Excel ফাইল সেভ করা
        try (FileOutputStream out = new FileOutputStream("document_with_video_link.xlsx")) {
            workbook.write(out);
        }

        workbook.close();
        System.out.println("ভিডিও লিঙ্ক সফলভাবে Excel ডকুমেন্টে যোগ করা হয়েছে!");
    }
}

এটি কী করবে:

  • Excel ডকুমেন্টে একটি video link (URL) যোগ করবে, যা একটি ক্লিকযোগ্য লিঙ্ক হিসেবে কাজ করবে।
  • ডকুমেন্টটি document_with_video_link.xlsx নামে সেভ হবে।

সারাংশ

Apache POI ব্যবহার করে আপনি Word এবং Excel ডকুমেন্টে Media Files যেমন Images এবং Videos যোগ করতে পারেন। Word ডকুমেন্টে ইমেজ যোগ করা সহজ, কিন্তু ভিডিও যোগ করার জন্য OLE Object বা লিঙ্ক ব্যবহার করতে হবে। Excel ডকুমেন্টে ইমেজ এবং ভিডিও লিঙ্ক সহজেই যোগ করা সম্ভব। এই ফিচারগুলো আপনাকে ডকুমেন্টে মাল্টিমিডিয়া উপাদান অন্তর্ভুক্ত করার ক্ষেত্রে সহায়তা করবে।

Content added By

Embedded Object ম্যানিপুলেশন এবং Extraction

180

Apache POI ব্যবহার করে Microsoft Office ফাইল যেমন Excel, Word, এবং PowerPoint-এ অন্তর্ভুক্ত embedded objects (যেমন: ছবি, গ্রাফ, টেবিল, অন্যান্য ডকুমেন্টস) পরিচালনা এবং এক্সট্র্যাক্ট করা সম্ভব। যদিও POI মূলত Office ফাইলের কন্টেন্ট (যেমন: টেক্সট, সেল, প্যারাগ্রাফ) ম্যানিপুলেট করার জন্য ব্যবহৃত, কিছু সীমিত ফিচার দিয়ে এম্বেডেড অবজেক্ট এক্সট্র্যাকশনও সম্ভব।

এটি সাধারণত OLE (Object Linking and Embedding) অবজেক্ট বা VBA Macros, পিডিএফ, এমবেডেড ইমেজ, এবং অন্যান্য প্রকারের অর্গানাইজড কন্টেন্টের মধ্যে ব্যবহৃত হয়।

এই পোস্টে আমরা Apache POI দিয়ে embedded objects ম্যানিপুলেশন এবং এক্সট্র্যাকশন করার কিছু পদ্ধতি আলোচনা করব।

১. Embedded Images এক্সট্র্যাকশন (Excel)

যখন একটি Excel ফাইলে এম্বেডেড ইমেজ থাকে, তখন POI ব্যবহার করে সেই ইমেজগুলো এক্সট্র্যাক্ট করা সম্ভব। এখানে, আমরা XSSFSheet এর মাধ্যমে এম্বেডেড ইমেজের ডেটা উদ্ধার করব।

কোড উদাহরণ: Excel ফাইলে Embedded Image Extraction

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.xssf.usermodel.XSSFPictureData;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.*;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

public class ExcelImageExtraction {

    public static void main(String[] args) throws IOException, InvalidFormatException {
        // Excel ফাইলের ইনপুট স্ট্রিম
        FileInputStream fis = new FileInputStream(new File("embeddedImageExample.xlsx"));
        
        // XSSFWorkbook তৈরি করা
        XSSFWorkbook workbook = new XSSFWorkbook(fis);

        // ইমেজ ডাটা খোঁজা
        List<XSSFPictureData> pictures = workbook.getAllPictures();

        // ইমেজ এক্সট্র্যাক্ট করা
        for (XSSFPictureData picture : pictures) {
            byte[] data = picture.getData();
            FileOutputStream fos = new FileOutputStream("extractedImage" + picture.suggestFileExtension());
            fos.write(data);
            fos.close();
        }

        // Excel ফাইল বন্ধ করা
        workbook.close();
        fis.close();

        System.out.println("ইমেজ সফলভাবে এক্সট্র্যাক্ট করা হয়েছে!");
    }
}

কোড ব্যাখ্যা:

  • getAllPictures(): এই মেথডটি Excel ফাইলে থাকা সব ইমেজকে একত্রিত করে দেয়।
  • XSSFPictureData: এটি এম্বেডেড ছবির ডেটা ধারণ করে, যা এক্সট্র্যাক্ট করা সম্ভব।
  • ছবির byte[] ডেটা এক্সট্র্যাক্ট করা এবং ফাইল আউটপুট স্ট্রিমে লিখে দেওয়া হয়।

২. Embedded Objects Extraction in Word (DOCX)

Word ডকুমেন্টের মধ্যে এম্বেডেড অবজেক্ট যেমন PDF, Excel, বা অন্য কোনো ফাইল থাকে, সেটি Apache POI দিয়ে এক্সট্র্যাক্ট করা কিছুটা জটিল হতে পারে। তবে, আপনি XWPF API ব্যবহার করে এই এম্বেডেড অবজেক্টের ডেটা পেতে পারেন।

কোড উদাহরণ: Word ডকুমেন্ট থেকে Embedded Object Extraction

import org.apache.poi.xwpf.usermodel.*;
import org.apache.xmlbeans.XmlCursor;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class WordEmbeddedObjectExtraction {

    public static void main(String[] args) throws IOException {
        // Word ডকুমেন্ট খোলা
        FileInputStream fis = new FileInputStream(new File("embeddedObjectExample.docx"));
        XWPFDocument document = new XWPFDocument(fis);

        // ডকুমেন্টের প্যারাগ্রাফের মধ্যে এম্বেডেড অবজেক্ট খোঁজা
        for (XWPFParagraph paragraph : document.getParagraphs()) {
            XmlCursor cursor = paragraph.getCTP().newCursor();
            if (cursor.toNextToken() == XmlCursor.TokenType.START) {
                System.out.println("এম্বেডেড অবজেক্ট পাওয়া গেছে!");
                // প্রয়োজনে অবজেক্ট এক্সট্র্যাক্ট বা প্রসেস করা যেতে পারে
            }
        }

        fis.close();
        document.close();

        System.out.println("Word ডকুমেন্ট থেকে এম্বেডেড অবজেক্ট খোঁজা সম্পন্ন!");
    }
}

কোড ব্যাখ্যা:

  • XmlCursor: এম্বেডেড অবজেক্ট খুঁজে বের করার জন্য XML Cursor ব্যবহার করা হচ্ছে। যদিও POI সরাসরি এম্বেডেড অবজেক্ট এক্সট্র্যাক্ট করার সাপোর্ট দেয় না, তবে XMLBeans এর মাধ্যমে এম্বেডেড অবজেক্টগুলোর অবস্থান নির্ণয় করা সম্ভব।

৩. Embedded Object Extraction in PowerPoint (PPTX)

PowerPoint প্রেজেন্টেশনের মধ্যে এম্বেডেড অবজেক্ট যেমন Excel শীট বা PDF ফাইল সংযুক্ত থাকলে, সেই অবজেক্ট গুলি এক্সট্র্যাক্ট করার জন্য POI একটি নির্দিষ্ট API সরবরাহ করে না। তবে আপনি HSLF বা XSLF API ব্যবহার করে প্রেজেন্টেশনের মধ্যে থাকা Picture বা Shape এর ডেটা বের করতে পারেন।

কোড উদাহরণ: PowerPoint থেকে Embedded Image Extraction

import org.apache.poi.xslf.usermodel.*;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

public class PowerPointImageExtraction {

    public static void main(String[] args) throws IOException {
        // PowerPoint ফাইলের ইনপুট স্ট্রিম
        FileInputStream fis = new FileInputStream(new File("embeddedImagePowerPoint.pptx"));
        
        // PowerPoint প্রেজেন্টেশন তৈরি করা
        XMLSlideShow ppt = new XMLSlideShow(fis);

        // স্লাইডের মধ্যে ইমেজ খোঁজা
        List<XSLFPictureData> pictures = ppt.getPictures();

        // ইমেজ এক্সট্র্যাক্ট করা
        for (XSLFPictureData picture : pictures) {
            byte[] data = picture.getData();
            FileOutputStream fos = new FileOutputStream("extractedImage" + picture.suggestFileExtension());
            fos.write(data);
            fos.close();
        }

        // PowerPoint ফাইল বন্ধ করা
        ppt.close();
        fis.close();

        System.out.println("PowerPoint থেকে ইমেজ এক্সট্র্যাক্ট করা হয়েছে!");
    }
}

কোড ব্যাখ্যা:

  • XSLFPictureData: এম্বেডেড ছবি বা গ্রাফ খুঁজে বের করার জন্য XSLF API এর ব্যবহার।
  • getPictures(): PowerPoint প্রেজেন্টেশনের সকল এম্বেডেড ছবির তথ্য নিয়ে আসে।

৪. Embedding Files into Office Documents

Apache POI এর মাধ্যমে আপনি অফিস ডকুমেন্টে EMBED ফাইলও অন্তর্ভুক্ত করতে পারেন। এর মাধ্যমে আপনি বিভিন্ন ফাইল (যেমন: Excel, PDF, Word) এম্বেড করে রাখতে পারেন।

কোড উদাহরণ: Excel ডকুমেন্টে এম্বেডেড ফাইল যোগ করা

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class ExcelEmbedFileExample {

    public static void main(String[] args) throws IOException {
        // Excel Workbook তৈরি করা
        XSSFWorkbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");

        // ফাইল এম্বেড করা
        // এম্বেড করার জন্য OLE Object বা Excel এর স্টাইল অনুসরণ করতে হবে
        // এখানে একটি ফাইল এম্বেড করা যেতে পারে (যেমন: PDF, Excel, etc.)

        // Excel ফাইল সেভ করা
        FileOutputStream fileOut = new FileOutputStream("embeddedFileExcel.xlsx");
        workbook.write(fileOut);
        fileOut.close();
        
        workbook.close();

        System.out.println("Excel ডকুমেন্টে ফাইল এম্বেড করা হয়েছে!");
    }
}

Apache POI এর মাধ্যমে embedded objects ম্যানিপুলেশন এবং এক্সট্র্যাকশন সম্ভব, তবে এটি বেশ কিছু সীমাবদ্ধতার মধ্যে পড়ে। আপনি Excel, Word, এবং PowerPoint ডকুমেন্টে এম্বেডেড ইমেজ, PDF, Excel শীট, বা অন্যান্য ডেটা এক্সট্র্যাক্ট এবং এম্বেড করতে পারেন। তবে, কিছু ক্ষেত্রে যেমন OLE objects বা অন্যান্য ফাইলের এক্সট

্র্যাকশন করতে POI সরাসরি সমর্থন না দিলেও, Java এর অন্যান্য টুলস বা লাইব্রেরি ব্যবহার করে এই ধরনের ফিচার সম্পন্ন করা সম্ভব।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...